[DllImport("msi.dll", CharSet=CharSet.Auto, SetLastError=true)]
static extern uint MsiProvideAssembly(string assembly, string context, uint mode, int info, System.Text.StringBuilder path, ref int pathSize);
Declare Function MsiProvideAssembly Lib "msi.dll" (TODO) As TODO
None.
This function is available starting with Windows Installer version 2.0.
Please add some!
The following method will only work if your assembly was installed via Windows Installer:
public static string EnsureAssemblyIsInstalled(string assemblyName, string installPath)
{
int buffer = 1024;
StringBuilder path = new StringBuilder(1024);
uint error = UnsafeInterop.MsiProvideAssembly(assemblyName, installPath, 0, 0, path, ref buffer);
if (error == 0)
return path.ToString(); // Already installed or successfully installed
// Failed to install
return null;
}
Do you know one? Please contribute it!